package com.sgb.kjwl.repository;

import com.sgb.link.entity.AreaEntity;
import com.sgb.kjwl.model.entity.BannerEntity;
import com.sgb.kjwl.model.entity.BuildEntity;
import com.sgb.kjwl.model.entity.CompanyBuyEntity;
import com.sgb.kjwl.model.entity.CompanyBuyHeader;
import com.sgb.kjwl.model.entity.DeviceEntity;
import com.sgb.kjwl.model.entity.DeviceOutEntity;
import com.sgb.jicai.entity.FilterEntity;
import com.sgb.kjwl.model.entity.InformationEntity;
import com.sgb.kjwl.model.entity.LeaseEntity;
import com.sgb.kjwl.model.entity.MachineInEntity;
import com.sgb.kjwl.model.entity.MachineOutEntity;
import com.sgb.kjwl.model.entity.MaterialListEntity;
import com.sgb.kjwl.model.entity.MaterialMenuEntity;
import com.swgk.core.view.entity.MenuEntity;
import com.sgb.kjwl.model.entity.NewsEntity;
import com.sgb.kjwl.model.entity.PackersBusinessScopeEntity;
import com.sgb.kjwl.model.entity.PackersPersonDetailEntity;
import com.sgb.kjwl.model.entity.PackersPersonEntity;
import com.sgb.kjwl.model.entity.PackersSkillsEntity;
import com.sgb.kjwl.model.entity.PackersTeamEntity;
import com.sgb.kjwl.model.entity.ParentAreaEntity;
import com.sgb.kjwl.model.entity.PickProInfoEntity;
import com.sgb.kjwl.model.entity.ProChildListEntity;
import com.sgb.kjwl.model.entity.ProListEntity;
import com.sgb.kjwl.model.entity.ProvinceEntity;
import com.sgb.link.entity.PublicTypeEntity;
import com.sgb.kjwl.model.entity.RecommendEntity;
import com.sgb.kjwl.model.entity.RentingEntity;
import com.sgb.kjwl.model.entity.SearchDeviceOutEntity;
import com.sgb.kjwl.model.entity.SearchMachineInEntity;
import com.sgb.kjwl.model.entity.SearchMachineOutEntity;
import com.sgb.kjwl.model.entity.SearchMaterialEntity;
import com.sgb.kjwl.model.entity.SupplierEntity;
import com.sgb.kjwl.model.entity.TalentEntity;
import com.sgb.kjwl.model.entity.TenderInfoEntity;
import com.sgb.kjwl.model.entity.supplier3.DictEntity3;
import com.sgb.kjwl.model.entity.supplier3.SupplierRecommendEntity;
import com.sgb.kjwl.model.response.CommonResponse;
import com.swgk.core.base.model.entity.ListResponse;
import com.swgk.core.base.model.entity.BaseEntity;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;

public interface HomeRepertory extends BaseRepertory {
    Observable<BaseEntity<List<BannerEntity>>> getMaterialBanner();

    Observable<BaseEntity<List<MenuEntity>>> getMenu();

    Observable<BaseEntity<List<MaterialMenuEntity>>> getMaterialMenu();

    Observable<ListResponse<List<MaterialListEntity>>> getMaterialList(String cid, String areacode);

    Observable<BaseEntity<List<CommonResponse<SupplierEntity>>>> getSupplierList(String areacode);

    Observable<BaseEntity<List<CommonResponse<InformationEntity>>>> getInformation(String areacode);

    Observable<BaseEntity<NewsEntity>> getNewsDetail(String id);

    Observable<List<String>> getMaterialHotSearch();

    Observable<Boolean> saveSearchHistory(String name, int index);

    Observable<List<String>> querySearchHistory(int index);

    Observable<Boolean> delAllSearchHistory(int index);

    Observable<Boolean> delSearchHistory(String name, int index);

    Observable<BaseEntity<List<BannerEntity>>> getMachineBanner();

    Observable<BaseEntity<List<MenuEntity>>> getMachineMenu();

    Observable<BaseEntity<List<LeaseEntity>>> getMachineLease(String areacode);

    Observable<BaseEntity<List<RentingEntity>>> getMachineRenting(String areacode);

    Observable<ListResponse<List<SearchMaterialEntity>>> getMaterialSearch(String areacode, String item_provinceId, String key, int page, int size);

    Observable<List<String>> getMachineHotSearch();

    Observable<BaseEntity<ListResponse<List<SearchMachineOutEntity>>>> getMachineSearch(int page, int size, String areacode, String key);

    Observable<BaseEntity<ListResponse<List<SearchMachineInEntity>>>> getMachineInSearch(int page, int size, String areacode, String key);

    Observable<BaseEntity<List<BannerEntity>>> getDeviceBanner();

    Observable<BaseEntity<List<MenuEntity>>> getDeviceMenu();

    Observable<BaseEntity<List<DeviceEntity>>> getDeviceRecommand(String areacode);

    Observable<BaseEntity<List<FilterEntity<List<FilterEntity>>>>> getDeviceFilter();

    Observable<BaseEntity<List<FilterEntity<List<FilterEntity>>>>> getDeviceFilterByNumber(String pNo, String cNo);

    Observable<List<String>> getDeviceHotSearch();

    Observable<ListResponse<List<SearchDeviceOutEntity>>> getDeviceOutSearch(int page, int size, String areacode, String key);

    Observable<BaseEntity<List<BannerEntity>>> getPackersBanner();

    Observable<BaseEntity<List<MenuEntity>>> getPackersMenu();

    Observable<BaseEntity<List<BuildEntity>>> getPackersBuild(String areacode);

    Observable<BaseEntity<List<TalentEntity>>> getPackersTalent(String areacode);

    Observable<BaseEntity<ListResponse<List<AreaEntity>>>> getAreaList();

    Observable<BaseEntity<ListResponse<List<CompanyBuyHeader<CompanyBuyEntity>>>>> getCompanyBuy(Map map, int page, int size);


    Observable<BaseEntity<List<ParentAreaEntity<List<ParentAreaEntity>>>>> getMachineArea(int areacode);

    Observable<BaseEntity<ListResponse<List<MachineOutEntity>>>> getMachineOut(int page, int size, int priceSort, Map map);

    Observable<BaseEntity<List<PublicTypeEntity>>> getMachineType();

    Observable<BaseEntity<List<FilterEntity<List<FilterEntity>>>>> getMachineFilter();

    Observable<BaseEntity<List<FilterEntity<List<FilterEntity>>>>> getMachineFilterInfo(String pNo, String cNo, int areacode);

    //工程机械求租
    Observable<BaseEntity<ListResponse<List<MachineInEntity>>>> getMachineIn(int page, int size, int sort, Map map);

    Observable<ListResponse<List<DeviceOutEntity>>> getDeviceOut(Map map, int page, int limit, int priceSort);

    Observable<BaseEntity<List<ParentAreaEntity<List<ParentAreaEntity>>>>> getDeviceArea(int areaId);

    //获取所有省份、自治区、直辖市
    Observable<BaseEntity<List<ProvinceEntity<List<ProvinceEntity>>>>> getAllProvince();

    Observable<BaseEntity<ListResponse<List<PackersPersonEntity>>>> getPackersPerson(int page, int limit, Map map);

    Observable<BaseEntity<ListResponse<List<PackersTeamEntity>>>> getPackersTeam(int page, int limit, Map map);

    //工程才找公司项目详情列表
    Observable<BaseEntity<PickProInfoEntity<ProListEntity<List<ProChildListEntity>>>>> companyProject(String compNO);

    //工程工队详情
//    Observable<BaseEntity<PackersEntity>> getPackersEntity(String id, String areacode);

    // 找活干
//     Observable<BaseEntity<FindJobRequestEntity>> getFindJobRequestEntity(Map map);

    Observable<BaseEntity<TenderInfoEntity>> getHotTenderInfo(String no);

    //工程工队人才详情
    Observable<BaseEntity<PackersPersonDetailEntity>> getPackersPersonDetailEntity(String id);

    //工程工队人才技能与证书详情
    Observable<BaseEntity<PackersSkillsEntity>> getPackersSkillsEntity(String id);

    //工程工队技能范围详情
    Observable<BaseEntity<PackersBusinessScopeEntity>> getPackersBusinessScopeEntity(String id);

    //token校验
    Observable<BaseEntity> checkToken(Map map);

    //首页banner
    Observable<BaseEntity<List<BannerEntity>>> getHomeBanner();

    //首页菜单类型
    Observable<BaseEntity<List<MenuEntity>>> getHomeMenu();

    //首页推荐列表分类
    Observable<BaseEntity<List<MaterialMenuEntity>>> getHomeRecommendType(String areacode);

    //获取首页材料推荐列表
    Observable<BaseEntity<List<RecommendEntity>>> getHomeRecommandList(String areacode, String type);

    Observable<BaseEntity<ListResponse<List<SupplierRecommendEntity>>>> getSupplierMapData(Map map);

    Observable<BaseEntity<ListResponse<List<SupplierRecommendEntity>>>> getGoodsMapData(Map map);

    Observable<BaseEntity<List<DictEntity3>>> getSupplierCityData(String areacode);

    Observable<BaseEntity<List<DictEntity3>>> getSupplierDistanceData();

    //获取供应商距离选择条件数据
    Observable<BaseEntity<List<DictEntity3>>>  getDistance();

    Observable<BaseEntity<List<DictEntity3>>> getSupplierSortData();

    //发现供应商
    Observable<BaseEntity<ListResponse<List<SupplierRecommendEntity>>>> getSupplierList(Map map);

    //发现供应商
    Observable<BaseEntity<ListResponse<List<SupplierRecommendEntity>>>> getGoodsList(Map map);

//    Observable<BaseEntity<ListResponse<List<SearchSTEntity>>>> getSTList(MaterialFilterJson materialFilterJson);
}
